/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Informacion.PuestoDeTrabajo.Controlador;

import Informacion.PuestoDeTrabajo.BEAN.PrivilegiosBEAN;
import Informacion.PuestoDeTrabajo.BEAN.PuestoDeTrabajoBEAN;
import Informacion.PuestoDeTrabajo.DAO.PuestoDeTrabajoDAO;
import Informacion.PuestoDeTrabajo.Vista.AgregarPuestoDeTrabajo;
import Informacion.PuestoDeTrabajo.Vista.PuestoDeTrabajo;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import sape.Controlador;
import sape.ControladorTabla;
import sape.MenuControlador;

/**
 *
 * @author Nilo
 */
public class AgregarPuestoDeTrabajoControlador extends ControladorTabla {

    AgregarPuestoDeTrabajo vista;
    MenuControlador menu_controlador;
    String[] columnas_tabla = {"Privilegio", "Descripción"};
    Object[][] datos_tabla = null;
    public int idPuestoDeTrabajo;

    public AgregarPuestoDeTrabajoControlador(AgregarPuestoDeTrabajo aThis) {
        this.vista = aThis;
    }

    public AgregarPuestoDeTrabajoControlador(AgregarPuestoDeTrabajo aThis, MenuControlador menu_controlador) {
        this.vista = aThis;
        this.menu_controlador = menu_controlador;
    }

    public void agregarPuestoDeTrabajo(JTextField tbPuestoTrabajo, JTextArea tbaDescripcion, JTextField tbSueldo, JTable tblPrivilegiosPuestoDeTrabajo) {
        if (!(PuestoDeTrabajoDAO.validarPuestoTrabajo(tbPuestoTrabajo) && PuestoDeTrabajoDAO.validarDescripcion(tbaDescripcion) && PuestoDeTrabajoDAO.validarSueldo(tbSueldo))) {
            JOptionPane.showMessageDialog(this.menu_controlador.vista, "No paso la validacion.");
            return;
        }
        System.out.println("Se va a crear el Puesto de Trabajo");
        PuestoDeTrabajoBEAN puesto_nuevo = new PuestoDeTrabajoBEAN(tbPuestoTrabajo.getText(), tbaDescripcion.getText(), Double.parseDouble(tbSueldo.getText()));
        System.out.println("Se creó el Puesto de Trabajo");
        String mensajeDAO = PuestoDeTrabajoDAO.agregarPuestoDeTrabajo(puesto_nuevo);

        if (mensajeDAO.compareTo("OK") == 0) {
            JOptionPane.showMessageDialog(this.menu_controlador.vista, "Puesto de Trabajo Agregado");
        } else {
            JOptionPane.showMessageDialog(this.menu_controlador.vista, "ERROR: " + mensajeDAO);
        }
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);
        PuestoDeTrabajo new_vista = new PuestoDeTrabajo(this.menu_controlador);
        this.menu_controlador.controlador_interno = new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }

    public void cancelar() {
        this.menu_controlador.cerrarVista();
        this.vista.setVisible(false);

        PuestoDeTrabajo new_vista = new PuestoDeTrabajo(this.menu_controlador);
        this.menu_controlador.controlador_interno = new_vista.controlador;
        this.menu_controlador.abrirVista(new_vista);
    }

//    public void agregarNuevoPuestoDeTrabajo(JTextField tbPuestoTrabajo, JTextArea tbaDescripcion, JTextField tbSueldo) {
//        if (!(PuestoDeTrabajoDAO.validarPuestoTrabajo(tbPuestoTrabajo) && PuestoDeTrabajoDAO.validarDescripcion(tbaDescripcion)&&PuestoDeTrabajoDAO.validarSueldo(tbSueldo))){
//            JOptionPane.showMessageDialog(this.menu_controlador.vista,"No pasó validación.");
//            return;
//        }
//        PuestoDeTrabajoBEAN puesto_nuevo=new PuestoDeTrabajoBEAN (tbPuestoTrabajo.getText(), tbaDescripcion.getText(), tbSueldo.getText());
//        String mensajeDAO=PuestoDeTrabajoDAO.agregarPuestoDeTrabajo(puesto_nuevo);
//        
//        if(mensajeDAO.compareTo("OK")==0){
//            JOptionPane.showMessageDialog(this.menu_controlador.vista, "Puesto de Trabajo Agregado");
//        }else{
//            JOptionPane.showMessageDialog(this.menu_controlador.vista, "ERROR: "+mensajeDAO);
//        }
//        
//        this.menu_controlador.cerrarVista();
//        this.vista.setVisible(false);
//        PuestoDeTrabajo new_vista= new PuestoDeTrabajo(this.menu_controlador);
//        this.menu_controlador.controlador_interno=new_vista.controlador;
//        this.menu_controlador.abrirVista(new_vista);                
//    }
    public void DarPrivilegios(int row, int column, DefaultTableModel controladorPrivilegios, DefaultTableModel controladorPrivilegiosPuestoDeTrabajo) {
        PrivilegiosBEAN privilegio = PrivilegiosBEAN.getPrivilegio(row);
//        controladorPrivilegiosPuestoDeTrabajo.addRow(new );
//        controladorPrivilegios.removeRow();
    }

    public void QuitarPrivilegios(int row, int column, DefaultTableModel controladorPrivilegios, DefaultTableModel controladorPrivilegiosPuestoDeTrabajo) {
        int idPrivilegio = (Integer) datos_tabla[row][0];
        controladorPrivilegios.removeRow(idPrivilegio);
    }

    public void LlenarTablaPrivilegios() {
        ArrayList<PrivilegiosBEAN> lista = PrivilegiosBEAN.getListaDePrivilegios(); // Añadiendo a un arrayList 
        String[][] datos_tablaA;
        String[] columnas_tablaA = new String[2];
        columnas_tablaA[0] = "Nombre";
        columnas_tablaA[1] = "Descripcion";
        datos_tablaA = new String[lista.size()][2];
        for (int i = 0; i < lista.size(); i++) {
            PrivilegiosBEAN priv = (PrivilegiosBEAN) lista.get(i);
            datos_tablaA[i][0] = priv.getPrivilegio();
            datos_tablaA[i][1] = priv.getPrivilegioDescripcion();
        }

        vista.controladorPrivilegios = new DefaultTableModel(datos_tablaA, columnas_tablaA);

    }

    @Override
    public int getColumnCount() {
        if (columnas_tabla == null) {
            return 0;
        }
        return columnas_tabla.length;
    }

    @Override
    public int getRowCount() {
        if (datos_tabla == null) {
            return 0;
        }
        return datos_tabla.length;
    }

    @Override
    public String getColumnName(int col) {

        return columnas_tabla[col];
    }

    @Override
    public Object getValueAt(int row, int col) {
        if (datos_tabla == null) {
            return " ";
        }
        return datos_tabla[row][col];
    }

    @Override
    public Class getColumnClass(int c) {
        if (datos_tabla == null) {
            return " ".getClass();
        }
        return getValueAt(0, c).getClass();
    }

    @Override
    public void setValueAt(Object value, int row, int col) {

        System.out.println("Setting value at " + row + "," + col
                + " to " + value
                + " (an instance of "
                + value.getClass() + ")");
        datos_tabla[row][col] = value;
        fireTableCellUpdated(row, col);
        System.out.println("New value of data:");
        printDebugData();

    }

    private void printDebugData() {
        int numRows = getRowCount();
        int numCols = getColumnCount();

        for (int i = 0; i < numRows; i++) {
            System.out.print("    row " + i + ":");
            for (int j = 0; j < numCols; j++) {
                System.out.print("  " + datos_tabla[i][j]);
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }
}
